home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
301-325
/
disk_319
/
cnewssrc
/
cnews.orig.lzh
/
man
/
expire.man
< prev
next >
Wrap
Text File
|
1989-06-28
|
12KB
|
265 lines
EEEEXXXXPPPPIIIIRRRREEEE((((8888)))) CCCC NNNNeeeewwwwssss ((((5555 JJJJuuuunnnneeee 1111999988889999)))) EEEEXXXXPPPPIIIIRRRREEEE((((8888))))
NNNNAAAAMMMMEEEE
expire, doexpire - expire old news
mkhistory - rebuild news history file
upact - update news active file
superkludge - implement stupid Supersedes header in news
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
////uuuussssrrrr////lllliiiibbbb////nnnneeeewwwwssssbbbbiiiinnnn////eeeexxxxppppiiiirrrreeee////eeeexxxxppppiiiirrrreeee [ ----aaaa archdir ] [ ----pppp ] [ ----ssss ]
[ ----FFFF c ] [ ----cccc ] [ ----nnnn nnnnn ] [ ----tttt ] [ ----llll ] [ ----vvvv ] [ ----dddd ] [
controlfile ]
////uuuussssrrrr////lllliiiibbbb////nnnneeeewwwwssssbbbbiiiinnnn////eeeexxxxppppiiiirrrreeee////ddddooooeeeexxxxppppiiiirrrreeee expireoptions
////uuuussssrrrr////lllliiiibbbb////nnnneeeewwwwssssbbbbiiiinnnn////eeeexxxxppppiiiirrrreeee////mmmmkkkkhhhhiiiissssttttoooorrrryyyy
////uuuussssrrrr////lllliiiibbbb////nnnneeeewwwwssssbbbbiiiinnnn////eeeexxxxppppiiiirrrreeee////uuuuppppaaaacccctttt
////uuuussssrrrr////lllliiiibbbb////nnnneeeewwwwssssbbbbiiiinnnn////eeeexxxxppppiiiirrrreeee////ssssuuuuppppeeeerrrrkkkklllluuuuddddggggeeee [ ----vvvv ] newsgroup ...
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
_E_x_p_i_r_e expires old news, removing it from the current-news
directories and (if asked to) archiving it elsewhere. It
updates news's _h_i_s_t_o_r_y file to match. _E_x_p_i_r_e should
normally be run nightly, typically by using _d_o_e_x_p_i_r_e (see
below).
_E_x_p_i_r_e's operations are controlled by a control file (which
can be named or supplied on standard input), which is not
optional-there is no default behavior. Each line of the
control file should have four white-space-separated fields,
as follows.
The first field is one or more newsgroups, separated by
commas (no spaces!); partial specifications are acceptable
(e.g. `comp' specifies all groups with that prefix).
The second field is one letter, `m', `u', or `x', specifying
that the line applies only to moderated groups, only to
unmoderated groups, or to both, respectively.
The third field specifies the expiry period in days. The
most general form is three numbers separated by dashes. The
units are days; decimal fractions are permitted. The first
number gives the retention period: how long must pass after
an article's arrival before it is a candidate for expiry.
The third number gives the purge date: how long must pass
after arrival before the article will be expired
unconditionally. The middle number gives the default expiry
date: how long after an article's arrival it is expired by
default. An explicit expiry date in the article will
override the default expiry date but not the retention
period or the purge date. If the field contains only two
numbers with a dash separating them, the retention period
defaults to 0. If the field contains only a number, the
retention period defaults to 0 and the purge date defaults
to `never'. (But see below.)
Page 1 (printed 6/29/89)
EEEEXXXXPPPPIIIIRRRREEEE((((8888)))) CCCC NNNNeeeewwwwssss ((((5555 JJJJuuuunnnneeee 1111999988889999)))) EEEEXXXXPPPPIIIIRRRREEEE((((8888))))
The fourth field is an archiving directory, or `@' which
indicates that the default archiving directory (see ----aaaa)
should be used, or `-' which suppresses archiving. An
explicit archiving directory (not `@') prefixed with `='
means that articles should be archived into that directory
itself; normally they go into subdirectories under it by
newsgroup name, as in the current-news directory tree.
(E.g., article 123 of comp.pc.drivel being archived into
archive directory /_e_x_p would normally become
/_e_x_p/_c_o_m_p/_p_c/_d_r_i_v_e_l/_1_2_3, but if the archiving directory was
given as `=/exp' rather than `/exp', it would become
/_e_x_p/_1_2_3.) _E_x_p_i_r_e creates subdirectories under an archiving
directory automatically, but will not create the archiving
directory itself. Archiving directories must be given as
full pathnames.
The first line of the control file which applies to a given
article is used to control its expiry. It is an error for
no line to apply; the last line should be something like
`all x 7 -' to ensure that at least one line is always
applicable. Cross-posted articles are treated as if they
were independently posted to each group.
The retention and purge defaults can be overridden by
including a _b_o_u_n_d_s line, one with the special first field
////bbbboooouuuunnnnddddssss////; the retention and purge defaults for following
lines will be those of the bounds line. The other fields of
a bounds line are ignored but must be present.
Entries in the _h_i_s_t_o_r_y file can be retained after article
expiry, to stop a late-arriving copy of the article from
being taken as a new article. To arrange this, include a
line with the special first field ////eeeexxxxppppiiiirrrreeeedddd////; this line then
controls the expiry of _h_i_s_t_o_r_y lines after the corresponding
articles expire. Dates are still measured from article
arrival, not expiry. The other fields of such a line are
ignored but must be present. It is strongly recommended
that such a line be included, and that it specify as long a
time as practical.
Command-line options are:
----aaaa dir _d_i_r is the default archiving directory; if no
default is given, the control file may not contain
any `@' archive-directory fields.
----pppp print an `index' line for each archived article,
containing its pathname, message ID, date
received, and `Subject:' line.
----ssss space is tight; optimize error recovery to
minimize space consumed rather than to leave as
Page 2 (printed 6/29/89)
EEEEXXXXPPPPIIIIRRRREEEE((((8888)))) CCCC NNNNeeeewwwwssss ((((5555 JJJJuuuunnnneeee 1111999988889999)))) EEEEXXXXPPPPIIIIRRRREEEE((((8888))))
much evidence as possible.
----FFFF c the subfield separator character in the middle
_h_i_s_t_o_r_y field is _c rather than the normal `~'.
----cccc check the format and consistency of the control
file and the _a_c_t_i_v_e file, but do not do any
expiring.
----nnnn nnnnn set _e_x_p_i_r_e's idea of the time to _n_n_n_n_n (for
testing).
----tttt print (on standard error) a shell-script-like
description of what would be done, but don't do
it.
----llll consider first filename in a _h_i_s_t_o_r_y line to be
the _l_e_a_d_e_r of its line, to be expired only after
all others have expired. (Meant for use on
obnoxious systems like VMS which don't support
real links.)
----vvvv verbose: report some statistics after termination.
----dddd turn on (voluminous and cryptic) debugging output.
_E_x_p_i_r_e considers the middle field of a _h_i_s_t_o_r_y line to
consist of one or more subfields separated by `~'. The
first is the arrival date, which can be either a
_g_e_t_d_a_t_e(3)-readable date or a decimal seconds count; _e_x_p_i_r_e
leaves this field unchanged. The second-if present, non-
null, and not `-'-is an explicit expiry date for the file,
again in either format, which _e_x_p_i_r_e will convert to a
decimal seconds count as it regenerates the _h_i_s_t_o_r_y file.
Subsequent fields are preserved but ignored.
_D_o_e_x_p_i_r_e checks whether another _d_o_e_x_p_i_r_e is running, checks
that there is enough disk space for expiry and archiving,
invokes _e_x_p_i_r_e with any _e_x_p_i_r_e_o_p_t_i_o_n_s given and with
/_u_s_r/_l_i_b/_n_e_w_s/_e_x_p_l_i_s_t as the control file, and reports any
difficulties by sending mail to _u_s_e_n_e_t. This is usually
better than just running _e_x_p_i_r_e directly.
_M_k_h_i_s_t_o_r_y rebuilds the _h_i_s_t_o_r_y file and its auxiliaries to
match the articles in /_u_s_r/_s_p_o_o_l/_n_e_w_s. _U_p_a_c_t updates the
third fields of the _a_c_t_i_v_e file to match the articles in
/_u_s_r/_s_p_o_o_l/_n_e_w_s (for historical reasons, _e_x_p_i_r_e does not do
this). These programs are both fairly slow and they both
lock the whole news system for the duration of the run, so
they should not be run casually.
_S_u_p_e_r_k_l_u_d_g_e inspects the files in /_u_s_r/_s_p_o_o_l/_n_e_w_s for the
Page 3 (printed 6/29/89)
EEEEXXXXPPPPIIIIRRRREEEE((((8888)))) CCCC NNNNeeeewwwwssss ((((5555 JJJJuuuunnnneeee 1111999988889999)))) EEEEXXXXPPPPIIIIRRRREEEE((((8888))))
_n_e_w_s_g_r_o_u_p(s) given, and removes any that have been
superseded, according to the `Supersedes' header, by newer
ones. The _h_i_s_t_o_r_y file is not altered; it's not worth the
trouble. The ----vvvv option produces a report of how many
articles have been superseded in each _n_e_w_s_g_r_o_u_p.
FFFFIIIILLLLEEEESSSS
/usr/lib/news/history history file
/usr/lib/news/history.pag_d_b_m database for history file
/usr/lib/news/history.dir_d_b_m database for history file
/usr/lib/news/explist expiry control file
/usr/lib/news/history.o history file as of last expiry
/usr/lib/news/history.n*new history file and _d_b_m files abuilding
/usr/lib/news/LOCKexpire_d_o_e_x_p_i_r_e's lock file
/usr/lib/newsbin/expire/*various auxiliaries
SSSSEEEEEEEE AAAALLLLSSSSOOOO
inews(1), dbm(3), relaynews(8)
HHHHIIIISSSSTTTTOOOORRRRYYYY
Written at U of Toronto by Henry Spencer, with contributions
by Geoff Collyer.
BBBBUUUUGGGGSSSS
Archiving is always done by copying, never by linking. This
has the side effect that cross-posted articles are archived
as several independent copies.
The ----pppp subject-finder botches continued header lines, as
does _m_k_h_i_s_t_o_r_y, although such lines are rare.
_U_p_a_c_t and _s_u_p_e_r_k_l_u_d_g_e are distasteful kludges, but then, so
are the third field of the _a_c_t_i_v_e file and the `Supersedes'
header.
Some of the more obscure options of _e_x_p_i_r_e have not been
tested well.
One cannot put more than one newsgroup into a single
archiving directory with the `=' feature, since the article
numbers will collide with each other and expire doesn't do
anything about this.
Page 4 (printed 6/29/89)